﻿#ifndef QPICTUREBOX_H
#define QPICTUREBOX_H

#include <QOpenGLWidget>
#include <QOpenGLFunctions_3_3_Core>
#include <QOpenGLShaderProgram>
#include <QVector>
#include <QMatrix4x4>
#include <QOpenGLBuffer>
#include <QOpenGLTexture>

class QPictureBox : public QOpenGLWidget, private QOpenGLFunctions_3_3_Core
{
    Q_OBJECT

public:
    QPictureBox(QWidget *parent = 0);
    enum ScaleType{
        fitXY,
        fitCenter,
        CenterCorp
    };
    void setImage(const QImage& image);//读取文件
    void setImage(const QString& filename);
    void setScaleType(enum ScaleType);
    void setBackGround(QColor color);

private:
    QVector<GLfloat> data;
    QOpenGLBuffer VBO;
    QOpenGLShaderProgram program;
    QOpenGLTexture *texture = nullptr;
    QImage image_data;
    QColor background;
    enum ScaleType image_Scale_Type = ScaleType::fitCenter;

    // QOpenGLWidget interface
protected:
    void initializeGL();
    void paintGL();
};

#endif // QPICTUREBOX_H
